home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / utils / graphic / viewers / general / msdos / ncsa / src / math.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-22  |  4.0 KB  |  168 lines

  1. /**
  2. *
  3. * Structure to hold information about math exceptions
  4. *
  5. */
  6. struct exception 
  7.     {
  8.     int type;        /* error type */
  9.     char *name;        /* math function name */
  10.     double arg1, arg2;     /* function arguments */
  11.     double retval;        /* proposed return value */
  12.     };
  13.  
  14. /*
  15. *
  16. * Exception type codes, found in exception.type
  17. *
  18. */
  19. #define DOMAIN    1    /* domain error */
  20. #define SING      2    /* singularity */
  21. #define OVERFLOW  3    /* overflow */
  22. #define UNDERFLOW 4    /* underflow */
  23. #define TLOSS      5    /* total loss of significance */
  24. #define PLOSS      6    /* partial loss of significance */
  25.  
  26. /**
  27. *
  28. * Error codes generated by basic arithmetic operations (+ - * /)
  29. *
  30. */
  31. #define FPEUND 1    /* underflow */
  32. #define FPEOVF 2    /* overflow */
  33. #define FPEZDV 3    /* zero divisor */
  34. #define FPENAN 4    /* not a number (invalid operation) */
  35. #define FPECOM 5    /* not comparable */
  36.  
  37. /**
  38. *
  39. * Constants 
  40. *
  41. */
  42. #define PI   3.14159265358979323846
  43. #define PID2 1.57079632679489661923    /* PI divided by 2 */
  44. #define PID4 0.78539816339744830962    /* PI divided by 4 */
  45. #define I_PI 0.31830988618379067154    /* Inverse of PI */
  46. #define I_PID2 0.63661977236758134308    /* Inverse of PID2 */
  47.  
  48. #define HUGE 1.797693e308        /* huge value */
  49. #define TINY 2.2e-308            /* tiny value */
  50. #define LOGHUGE 709.778            /* natural log of huge value */
  51. #define LOGTINY -708.396        /* natural log of tiny value */
  52.  
  53. /**
  54. *
  55. * External declarations
  56. *
  57. */
  58. extern int _FPERR;    /* floating point arithmetic error */
  59. extern int errno;    /* UNIX error code */
  60.  
  61. #ifndef NARGS
  62. extern double acos(double);
  63. extern double asin(double);
  64. extern double atan(double);
  65. extern double atan2(double, double);
  66. extern double atof(char *);
  67. extern double ceil(double);
  68. extern double cos(double);
  69. extern double cosh(double);
  70. extern void CXFERR(int);
  71. extern double drand48(void); 
  72. extern char *ecvt(double, int, int *, int *);
  73. extern double erand48(short *);
  74. extern double except(int, char *, double, double, double);
  75. extern double exp(double);
  76. extern double fabs(double);
  77. extern char *fcvt(double, int, int *, int *);
  78. extern double floor(double);
  79. extern double fmod(double, double);
  80. extern double frexp(double, int *);
  81. extern char *gcvt(double, int, char *);
  82. extern long jrand48(short *);
  83. extern double ldexp(double, int);
  84. extern void lcong48(short *);
  85. extern double log(double);
  86. extern double log10(double);
  87. extern long lrand48(void);
  88. extern int matherr(struct exception *);
  89. extern double modf(double, double *);
  90. extern long mrand48(void);
  91. extern long nrand48(short *);
  92. extern double pow(double, double);
  93. extern int rand(void);
  94. extern short *seed48(short *);
  95. extern double sin(double);
  96. extern double sinh(double);
  97. extern double sqrt(double);
  98. extern void srand(unsigned);
  99. extern void srand48(long);
  100. extern double tan(double);
  101. extern double tanh(double);
  102.  
  103. #else
  104. extern double acos();
  105. extern double asin();
  106. extern double atan();
  107. extern double atan2();
  108. extern double atof();
  109. extern double ceil();
  110. extern double cos();
  111. extern double cosh();
  112. extern void CXFERR();
  113. extern double drand48(); 
  114. extern char *ecvt();
  115. extern double erand48();
  116. extern double except();
  117. extern double exp();
  118. extern double fabs();
  119. extern char *fcvt();
  120. extern double floor();
  121. extern double fmod();
  122. extern double frexp();
  123. extern char *gcvt();
  124. extern long jrand48();
  125. extern void lcong48();
  126. extern double ldexp();
  127. extern double log();
  128. extern double log10();
  129. extern long lrand48();
  130. extern int matherr();
  131. extern double modf();
  132. extern long mrand48();
  133. extern long nrand48();
  134. extern double pow();
  135. extern int rand();
  136. extern short *seed48();
  137. extern double sin();
  138. extern double sinh();
  139. extern double sqrt();
  140. extern void srand();
  141. extern void srand48();
  142. extern double tan();
  143. extern double tanh();
  144. #endif
  145.  
  146. /**
  147. *
  148. * Macros
  149. *
  150. */
  151. #define abs(x) ((x)<0?-(x):(x))
  152. #define max(a,b) ((a)>(b)?(a):(b))
  153. #define min(a,b) ((a)<=(b)?(a):(b))
  154.  
  155. /**
  156. *
  157. * Define NULL if it's not already defined
  158. *
  159. */
  160. #ifndef NULL
  161. #if SPTR
  162. #define NULL 0            /* null pointer value */
  163. #else
  164. #define NULL 0L
  165. #endif
  166. #endif
  167.  
  168.